Use of software is often governed by a software license. Because software can be easily copied after being sold, uses of software without an associated license is difficult to prevent. Such uses include piracy, where the software is illicitly replicated and pirated copies are installed for use on non-licensed computer systems. Additionally, a purchaser of a non-pirated copy might improperly use software outside of the scope of the associated license. For example, a user may install the software on more computer systems than are allowed under the license.
While licenses provide a legal avenue for recourse against such practices, they can be difficult to enforce in practice. Accordingly, there is a need for other means to reduce the amount of use of software outside of license terms. One such method is based on creating an identifier for the computer system of a user who has been licensed to use software. U.S. Pat. No. 6,243,468 entitled “Software Anti-Piracy System That Adapts to Hardware Upgrades” and published U.S. Patent Application Number 20010044782 detail this method.
Computer systems typically include various pieces of hardware, including disk drives, CDROM drives, and processors. These hardware components each have identifiers (serial numbers or names) that can be accessed by the system, for example by executing a plug-and-play (PnP) call. These component identifiers can be combined in a pre-determined manner to create a hardware identifier (HWID), which may be used to identify a particular computer system.
Significantly, the HWID may be employed as part of or in combination with a software license to ensure that software that was licensed for use on a specific computer system is used only on that computer system. In particular, software with a license specifying a HWID will only run on a computer system if, at runtime, the HWID computed for the computer system matches the HWID specified in the software license.
However, when the user of a computer system adds, subtracts, or exchanges components of the system, for example, for repair or upgrade purposes, the HWID changes. Each new or exchanged component will have a new component identifier. Thus, when the HWID for the system is computed, a new component identifier will cause the HWID to change. This causes problems when the user has received a license for software that specifies the HWID for a prior version of their computer system.
Accordingly, it is known to accept a stored HWID as a substantial match when compared to a newly calculated HWID and allow the user to run the software. For example, the abovementioned U.S. Pat. No. 6,243,468 discloses an instance in which five component identifiers are included in the HWID, and if any four of them are found to match, the software product is enabled to operate on the computer system.
Not addressed in the prior art is the fact that certain components may be exchanged more frequently than others. Also not addressed is the utility of having less stringent computer-system matching requirements for the license as time elapses, since the value of the software may decrease as time progresses. A HWID-based licensing system that addresses these facts would provide increased security and allow for dynamic security over time.
In view of the aforementioned situation, there is a need for a system that allows a HWID to be used for identifying and linking a licensed instantiation of software to one computer system, while tolerating changes in the computer system of a legitimate user with the flexibility required to accommodate hardware system changes and adapt to the passage of time.